import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_first/splash.dart';
import 'package:flutter_first/utils/delegate.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

import 'routes.dart';
import 'widget/text.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    // 去除半透明状态栏
    if (Theme.of(context).platform == TargetPlatform.android) {
      SystemChrome.setSystemUIOverlayStyle(
          SystemUiOverlayStyle(statusBarColor: Colors.transparent));
    }

    return MaterialApp(
      // 是否显示debug标签
      debugShowCheckedModeBanner: false,
      // 应用名称
      title: 'Flutter First',
      // 主题
      theme: ThemeData(
          // primarySwatch是主题颜色的一个样本，通过它可以在一些条件下生成一些其他的属性
          // 如果没有指定primaryColor，并且当前主题不是深色主题，
          // 那么primaryColor就会默认为primarySwatch指定的颜色，
          // 还有一些相似的属性如accentColor、indicatorColor等也会受其影响
          primarySwatch: Colors.purple, //主题颜色样本
          primaryColor: Colors.purple, //主色，决定导航栏颜色
          primaryColorBrightness: Brightness.dark, //深色还是浅色
          textSelectionTheme: TextSelectionThemeData(
            cursorColor: Colors.deepPurple,
            selectionColor: Colors.deepPurple,
            selectionHandleColor: Colors.deepPurpleAccent,
          )
      ),
      // 路由表（命名路由）
      routes: routes,
      // 注册首页路由
      // 也可通过以下方式注册首页路由：
      // initialRoute: '/',
      // '/':(context) => MyHomePage(title: 'Flutter Demo Home Page'),
      // home: SplashPage(),
      home: Splash(),
      // 如果指定的路由名在路由表中已注册，则会调用路由表中的builder函数来生成路由组件；
      // 如果路由表中没有注册，才会调用onGenerateRoute来生成路由
      // onGenerateRoute全局的路由跳转前置处理逻辑，只会对命名路由生效
      onGenerateRoute: (setting) {
        return MaterialPageRoute(builder: (context) {
          // 根据逻辑需求可访问不同的路由页（前置处理），如判断当前的登录状态
          String routeName = setting.name;
          switch (routeName) {
            case newDrawer:
              return TextDemo();
              break;
            default:
              return TextDemo();
          }
        });
      },
      // 多语言配置
      localizationsDelegates: [
        // 本地化的代理类
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        const FallbackCupertinoLocalisationsDelegate()
      ],
      supportedLocales: [
        Locale('zh', 'CH'), //中文简体
        Locale('en', 'US'), //美国英语
      ],
      locale: Locale('zh'),
    );
  }
}
